趁著疫情在家期間,我已經將【Classic TDD by Example: Refactoring to Design】的 C# 版本培訓內容準備完成,經過約一週的 A/B testing 與內容調整(感謝前100位下單的朋友,幫忙做測試、給建議、提意見),目前已經調整到進入穩定的產能,以及較好的品質與體驗。
目前優先開放給之前有填寫 google form 表單的朋友,開始進行報名。(若您當時有填寫 google form 且語言選擇是 C# 的,應該會收到我今天寄出的主動通知信,若有興趣,可儘快報名卡位出貨順序)
#Google表單預購 優惠價為 NT$ 34,000,原價為 NT$ 36,000,預計為期一週,7/24 正式對外販售,將以原價以及相關票種折扣售票(介於 NT$ 34,000~36,000 之間)
若您不是使用 C#,但看得懂 C#,或是寫 Java 的同學,想要優先入手 C# 的版本也是可以的,屆時推出 Java 或其他語言版本時,我將提供超值的加購優惠價格給你。這主題內容,越早學會,越早能用在實務上,越早能得到它帶來的好處。
接下來預計推出的語言順序為:Java > Python > JavaScript > PHP ....
給自己的目標是期望在年底之前可以推出 Java 版本,但會不會突然被其他計畫打亂,就不敢肯定了,畢竟如果疫情趨緩,我還有這兩個月的企業客戶 coaching 檔期要還。
另外,也開放其他語言的朋友提前報名,(我不會請你提前繳費,提前報名也不影響屆時的票價,純粹是在你知道相關資訊與票價之後,你仍感興趣想報名,到時封測、A/B testing 我會主動邀請你,是否要先以更優惠的價格來參與封測,提供建議與 feedback)
出貨清單與狀態更新,請見:https://hackmd.io/@SYvyb1O4SLq8W6nvAQW5mw/ByVVUt86O
之前填寫 google 表單時的培訓介紹,以及授權條款內容,請見:https://tdd.best/courses/classic-tdd-by-example-video-training/
同時也有1部Youtube影片,追蹤數超過22萬的網紅BorntoDev,也在其Youtube影片中提到,เคยเขียนโปรเจคแล้ว Code เยอะ ใหญ่ กินพื้นที่เยอะขึ้นเรื่อยๆไหม แน่นอนว่าถ้าเก็บมันไว้อีกคงเหม็นเน่าเหมือนขยะที่ไม่ได้ทิ้งแน่ๆ ! ดังนั้นวันนี้เรามาดูเท...
java refactoring 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
System.out.println() ในภาษา Java ถือว่าออกแบบผิดหลักการข้อใด?
.
อันนี้อ้างอิงตามตำรา
Head First Design Patterns (2008) หน้า 268 📗 📗
(ใครมีตำราก็ไปกางเปิดดูได้)
.
👧 คำตอบ การออกแบบคำสั่งชุดนี้ในภาษา Java
จะถือว่าผิดหลักการออกแบบโปรแกรมเรื่อง
"Principle of Least Knowledge"
แปลเป็นไทย "หลักการของความรู้น้อยที่สุด"
.
Principle of Least Knowledge
เป็นหลักการออกแบบ Object ให้รู้จักเพื่อนๆ ที่ใกล้ชิดไม่กี่คน 👩❤️💋👨
.
.
จากประโยคคำสั่ง System.out.println()
System กว่าจะรู้จัก println() ก็ต้องผ่าน out มันไกลเกินไปลูกพี่
ซึ่งข้อเสียมันทำให้โค้ดมีลักษณะยึดติดกันเกินไป
.
ศัพท์ทาง Object Oriented Programming โค้ดจะมีอาการเรียกว่า "coupling" โค้ดเป็นคู่สามีภรรยา เกี่ยวดองกันแนบแน่น
เช่น ถ้าเกิด out มีการแก้ไขก็จะกระเทือนต่อ println() และ System ไปด้วย (อันนี้แค่ยกตัวอย่างนะ ของจริงอาจไม่กระทบเลยก็ได้)
.
ในขณะที่ภาษาสมัยใหม่พวก Swift, Kotlin
จะเขียนสั้นๆ print(), println() ตามลำดับ
ไม่ต้องมาทำพิธีกรรมเรียกหลายชั้น หลายซ้อนแบบนี้
ก็เราแค่แสดงผลออกทางหน้าคอนโซลนี้น่า
มันจะทำอะไรให้มันวุ่นวายไปใย
.
จะขอยกตัวอย่างโค้ดในหนังสือเช่น
station.getThermometer().getTemperature();
เขียนแบบนี้ จะเห็นว่ามันยาวเหยียด
ถ้าเขียนครั้งเดียวพอทนได้
แต่ถ้าให้เขียนซ้ำๆ มันขี้เกียจเหมือนกันเนอะ
.
สำหรับวิธีแก้ไขปัญหาโค้ดที่ละเมิดหลัก
"Principle of Least Knowledge"
ไม่ยากเลย เราสามารถใช้หลักของดีไซน์แพทเทิร์นตัวหนึ่ง
นั้นก็คือ "เดอะเฟสไทยแลนด์"
...เฮยไม่ใช่แหละ 😜 😜
.
ใช้แพทเทิร์นที่เรียกว่า "The Facade"
เพื่อแก้ไขโค้ดลักษณะนี้
สนใจก็อย่าลืมไปทบทวน
ดีไซน์แพทร์นของ GOF นะ (ขอไม่ลงรายละเอียด)
.
แต่จะว่าไปมันก็เป็นแค่แนวคิดและหลักการเฉยๆ
แล้วแต่เราแหละ เขียนผิดหลักการยังไง
โค้ดก็รันได้ ปกติอยู่แล้ว
มันเป็นแนวคิด ไม่ใช้กฏหมายบังคับซะเมื่อไร
.
เพราะถ้าคนออกแบบเขาจะเอาแบบนี้
ชอบแบบนี้ ชอบที่เป็นแบบนี้ ชอบแววตาแบบนี้
ชอบรอยยิ้มแบบนี้ ก็ชอบคนนี้ ...โฮ้ว~~~
.
ถ้าทำแล้วโค้ดไร้บั๊ก ลูกค้าแฮปปี้พอใจ จ่ายเงินให้เรา ก็คือโอเคสองฝ่าย
ส่วนโปรแกรมเมอร์ที่มารับไม้ต่อ ไม่ชอบดีไซน์โค้ดแบบนี้
ก็จับ refactoring เอาเองแล้วกันเด้อ
.
อีกอย่างที่ยกตัวอย่างมาเป็นภาษา Java
ซึ่ง System.out.println() ใช้กันเป็นเรื่องปกติ
บิดา Java เขาจัดวาง println() ให้อยู่เป็นสัดเป็นส่วนอย่างนี้เอง
.
แต่เราต้องยอมรับว่า IDE ปัจจุบันมันฉลาดมาก
บางตัวแค่พิมพ์ S ก็แสนรู้
เดาใจเราออกว่าเราจะพิมพ์ System.out.println();
IDE สมัยนี้มันช่วยเราได้เยอะเลยทีเดียว
ไม่ต้องเสียเวลาพิมพ์ยาวเมื่อยมือ เสียเวลา
แต่ถ้ายังใช้ notepad อยู่ ก็ต้องทนเหนื่อยเอา
.
.
.
.
.
.
.
.
.
.
.
.
ทิ้งท้ายก่อนจากกันไป
<ประชาสัมพันธ์ขายของ>
หนังสือ "โปรแกรมเมอร์ก็รวยได้ ด้วยเส้นทางเอาท์ซอร์สสายดำ"
หนังสือที่จะเล่าเส้นทางสายเอาท์ซอร์สเงินดีรายได้งาม
✔ สำหรับตัวอย่างหนังสือ 👇
PDF: https://drive.google.com/file/d/1tAnMozeYd63dcbBGTQmT_ZrpSaamZS3e/edit
หรือดูจาก youtube: https://youtu.be/Ljf9iJhLcIs
.
รายละเอียดอ่านเพิ่มเติมได้ที่่ 👇
https://www.patanasongsivilai.com/blog/sale_book_rich_with_outsource/
.
✍ เขียนโดย โปรแกรมเมอร์ไทย thai programmer
เราจะผ่านโควิด-19 ไปกันนะทุกคคนนน
java refactoring 在 91 敏捷開發之路 Facebook 的最佳貼文
【#Code4Fun】這次是用 Python 來重構那套運費的範例啦。
心有餘力之餘,就來週更一下 coding for fun 的影片。
影片這裡去:https://www.youtube.com/watch?v=gTEexJCpXcA&feature=youtu.be&ab_channel=JoeyChen
【感想】一看就知道不是寫 Python 出身的,滿滿的 Java/C# 影片。
PyCharm 沒支援 parameter object 就算了,跟 parameter 相關的,都因為其彈性的緣故,也幾乎都沒支援(除非是簡單的值),是一種「其實我可以做,但我怕重構的功能把你本來的東西弄壞了」
沒事,也不是第一次遇到弱型別的語言啦,就是得手動繞一下,多組合一些小細節而已。
啊...我突然發現,我少抽了 product.size() 那一段了,那一段也蠻有趣的,因為 PyCharm 也沒支援 Move method,怎麼繞過去比較省事,要不就留給大家自己摸索了。(我錄影片碰到最大的問題,竟然是硬碟空間不夠了!)
※ 想持續週更,一個是得有時間,另一個是得有人看啊。大家的訂閱就是我的動力啊。
#一起來極速開發
#一起來重構
#一起來kata
#一起來Code4Fun
java refactoring 在 BorntoDev Youtube 的最讚貼文
เคยเขียนโปรเจคแล้ว Code เยอะ ใหญ่ กินพื้นที่เยอะขึ้นเรื่อยๆไหม แน่นอนว่าถ้าเก็บมันไว้อีกคงเหม็นเน่าเหมือนขยะที่ไม่ได้ทิ้งแน่ๆ ! ดังนั้นวันนี้เรามาดูเทคนิคการทำให้โค้ดเราสะอาดตา มีระเบียบ ซึ่งไม่ใช่แค่สิ่งที่ควรทำ แต่มันเป็นสิ่งที่ต้องทำกันเถอะ !
-----------------------------------------
➤ ติดต่อโฆษณา สนับสนุนได้ที่ : [email protected]
➤Kittikorn Prasertsak (P.Prame)
Founder & Co-Founder of BorntoDev
➤กดติดตามช่องของ Youtube ได้ที่ : https://www.youtube.com/c/BorntoDevTH...
➤Facebook : https://www.facebook.com/borntodev
➤Website : http://www.borntodev.com
java refactoring 在 How refactoring works in Java - CodeGym 的相關結果
Refactoring improves understanding of code written by other developers. · It helps find and fix bugs. · It can accelerate the speed of software ... ... <看更多>
java refactoring 在 Java refactoring and Source Actions - Visual Studio Code 的相關結果
The goal of the Java program refactoring is to make system-wide code changes without affecting behavior of the program. The Java Language Support for VS ... ... <看更多>
java refactoring 在 Java 入門指南- 單元18 - 重構 - 程式語言教學誌 的相關結果
重構(refactoring) 是指不改變軟體(software) 外部行為下,對程式原始碼(source code) 進行整理、修改,不外是希望提升原始碼的可讀性及更易於維護. Refactoring. ... <看更多>